home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / NSIS 2.41 / nsis-2.41-setup.exe / Examples / TextFunc.nsi < prev    next >
Encoding:
Text File  |  2008-01-27  |  23.9 KB  |  844 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Text Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Text Functions"
  9. OutFile "TextFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12. RequestExecutionLevel user
  13.  
  14. !include "WinMessages.nsh"
  15. !include "TextFunc.nsh"
  16.  
  17. !insertmacro LineFind
  18. !insertmacro LineRead
  19. !insertmacro FileReadFromEnd
  20. !insertmacro LineSum
  21. !insertmacro FileJoin
  22. !insertmacro ConfigRead
  23. !insertmacro ConfigWrite
  24. !insertmacro FileRecode
  25.  
  26. Var HWND
  27. Var INI
  28. Var LOG
  29. Var PROJECT
  30. Var CALLBACK
  31. Var VIEW
  32. Var FUNCTION
  33. Var LINEFIND1
  34. Var LINEFIND2
  35. Var LINEFIND3
  36. Var LINEREAD1
  37. Var LINEREAD2
  38. Var FILEREADFROMEND1
  39. Var LINESUM1
  40. Var FILEJOIN1
  41. Var FILEJOIN2
  42. Var FILEJOIN3
  43. Var TEXTCOMPARE1
  44. Var TEXTCOMPARE2
  45. Var TEXTCOMPARE3
  46. Var CONFIGREAD1
  47. Var CONFIGREAD2
  48. Var CONFIGWRITE1
  49. Var CONFIGWRITE2
  50. Var CONFIGWRITE3
  51. Var FILERECODE1
  52. Var FILERECODE2
  53.  
  54. Page Custom ShowCustom LeaveCustom
  55.  
  56. Function ShowCustom
  57.     InstallOptions::initDialog /NOUNLOAD "$INI"
  58.     Pop $hwnd
  59.     GetDlgItem $0 $HWND 1206
  60.     ShowWindow $0 0
  61.     GetDlgItem $0 $HWND 1208
  62.     ShowWindow $0 0
  63.     GetDlgItem $0 $HWND 1209
  64.     ShowWindow $0 0
  65.     StrCpy $FUNCTION LineFind
  66.     StrCpy $LINEREAD2 10
  67.     StrCpy $TEXTCOMPARE3 FastDiff
  68.     StrCpy $CONFIGREAD1 "$WINDIR\system.ini"
  69.     StrCpy $CONFIGREAD2 "shell="
  70.     StrCpy $FILERECODE2 CharToOem
  71.     InstallOptions::show
  72.     Pop $0
  73. FunctionEnd
  74.  
  75. Function LeaveCustom
  76.     ReadINIStr $0 $INI "Settings" "State"
  77.      ReadINIStr $R0 $INI "Field 1" "State"     
  78.     ReadINIStr $R1 $INI "Field 2" "State"
  79.      ReadINIStr $R2 $INI "Field 3" "State"
  80.      ReadINIStr $R3 $INI "Field 4" "State"
  81.      ReadINIStr $R4 $INI "Field 5" "State"
  82.      ReadINIStr $R5 $INI "Field 6" "State"
  83.     StrCpy $R4 $R4 8
  84.     StrCpy $R5 $R5 8
  85.     StrCpy $6 0
  86.     StrCpy $7 '$${'
  87.     StrCpy $8 'r'
  88.     StrCpy $9 'n'
  89.  
  90.     StrCmp $0 10 Log
  91.     StrCmp $0 9 ViewOrEdit
  92.     StrCmp $0 0 Enter
  93.     goto MainSend
  94.  
  95.     Log:
  96.     Exec 'notepad.exe $LOG'
  97.     Abort
  98.  
  99.     ViewOrEdit:
  100.     StrCmp $FUNCTION FileReadFromEnd 0 Edit
  101.     StrCmp $VIEW '' 0 ViewFileReadFromEndCallback
  102.     GetTempFileName $VIEW $PLUGINSDIR
  103.     StrCpy $7 '$$'
  104.     FileOpen $0 $VIEW w
  105.     FileWrite $0 `Function FileReadFromEndCallback$\r$\n`
  106.     FileWrite $0 `    MessageBox MB_OKCANCEL '$7$$9       "Line"=[$$9]$7\$9$7$$8           "#"=[$$8]$7\$9$7$$7          "-#"=[$$7]' IDOK +2$\r$\n`
  107.     FileWrite $0 `    StrCpy $$R0 StopFileReadFromEnd$\r$\n$\r$\n`
  108.     FileWrite $0 `    Push $$R0$\r$\n`
  109.     FileWrite $0 `FunctionEnd$\r$\n`
  110.     FileClose $0
  111.     StrCpy $7 '$${'
  112.     SetFileAttributes $VIEW READONLY
  113.     ViewFileReadFromEndCallback:
  114.     Exec 'notepad.exe $VIEW'
  115.     Abort
  116.  
  117.     Edit:
  118.     StrCmp $CALLBACK '' +5
  119.     StrCmp $6$R6 '0$R0$R4$R5' showproject
  120.     StrCmp $R6 '$R0$R4$R5' +3
  121.     Delete $CALLBACK
  122.     StrCpy $CALLBACK ''
  123.     StrCpy $R6 '$R0$R4$R5'
  124.  
  125.     #Project#
  126.     StrCmp $6$R0 "01. LineFind" 0 +5
  127.     IfFileExists $CALLBACK +2
  128.     GetTempFileName $CALLBACK $PLUGINSDIR
  129.     FileOpen $0 $CALLBACK w
  130.     goto function
  131.     IfFileExists $PROJECT +2
  132.     GetTempFileName $PROJECT $PLUGINSDIR
  133.     FileOpen $0 $PROJECT w
  134.  
  135.     #Name#
  136.     FileWrite $0 'Name "$FUNCTION"$\r$\n'
  137.     FileWrite $0 'OutFile "$PROJECT.exe"$\r$\n$\r$\n'
  138.  
  139.     #!include#
  140.     StrCmp $R0$R4 '1. LineFindExample5' 0 TextFuncInclude
  141.     IfFileExists '$EXEDIR\WordFunc.nsh' 0 +3
  142.     FileWrite $0 '!include "$EXEDIR\WordFunc.nsh"$\r$\n'
  143.     goto +2
  144.     FileWrite $0 '!include "WordFunc.nsh"$\r$\n'
  145.     FileWrite $0 '!insertmacro WordFind$\r$\n'
  146.     FileWrite $0 '!insertmacro WordFindS$\r$\n'
  147.     FileWrite $0 '!insertmacro WordFind2X$\r$\n'
  148.     FileWrite $0 '!insertmacro WordFind2XS$\r$\n'
  149.     FileWrite $0 '!insertmacro WordFind3X$\r$\n'
  150.     FileWrite $0 '!insertmacro WordFind3XS$\r$\n'
  151.     FileWrite $0 '!insertmacro WordReplace$\r$\n'
  152.     FileWrite $0 '!insertmacro WordReplaceS$\r$\n'
  153.     FileWrite $0 '!insertmacro WordAdd$\r$\n'
  154.     FileWrite $0 '!insertmacro WordAddS$\r$\n'
  155.     FileWrite $0 '!insertmacro WordInsert$\r$\n'
  156.     FileWrite $0 '!insertmacro WordInsertS$\r$\n'
  157.     FileWrite $0 '!insertmacro StrFilter$\r$\n'
  158.     FileWrite $0 '!insertmacro StrFilterS$\r$\n'
  159.     TextFuncInclude:
  160.     IfFileExists '$EXEDIR\TextFunc.nsh' 0 +3
  161.     FileWrite $0 '!include "$EXEDIR\TextFunc.nsh"$\r$\n'
  162.     goto +2
  163.     FileWrite $0 '!include "TextFunc.nsh"$\r$\n'
  164.     FileWrite $0 '!insertmacro $FUNCTION$\r$\n'
  165.     StrCmp $FUNCTION TextCompare +2
  166.     FileWrite $0 '!insertmacro TrimNewLines$\r$\n'
  167.  
  168.     #Section#
  169.     FileWrite $0 '$\r$\nSection -empty$\r$\n'
  170.     FileWrite $0 'SectionEnd$\r$\n$\r$\n'
  171.  
  172.     #Function .onInit#
  173.     FileWrite $0 'Function .onInit$\r$\n'
  174.     StrCmp $R0$R5 "6. TextCompareExample1" 0 TextCompareExample235
  175.     FileWrite $0 '    StrCpy $$R0 ""$\r$\n'
  176.     FileWrite $0 '    $7TextCompare} "$R1" "$R2" "$R3" "$R5"$\r$\n'
  177.     FileWrite $0 '    IfErrors error$\r$\n'
  178.     FileWrite $0 '    StrCmp $$R0 NotEqual 0 +2$\r$\n'
  179.     FileWrite $0 '    MessageBox MB_OK "             Files differ" IDOK +2$\r$\n'
  180.     FileWrite $0 '    MessageBox MB_OK "           Files identical"$\r$\n'
  181.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  182.     goto endoninit
  183.     TextCompareExample235:
  184.     StrCmp $R0$R5 "6. TextCompareExample2" +3
  185.     StrCmp $R0$R5 "6. TextCompareExample3" +2
  186.     StrCmp $R0$R5 "6. TextCompareExample5" 0 TextCompareExample4
  187.     FileWrite $0 '    StrCpy $$R0 "$R1"$\r$\n'
  188.     FileWrite $0 '    StrCpy $$R1 "$R2"$\r$\n$\r$\n'
  189.     FileWrite $0 '    GetTempFileName $$R2$\r$\n'
  190.     FileWrite $0 '    FileOpen $$R3 $$R2 w$\r$\n'
  191.     FileWrite $0 '    FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
  192.     FileWrite $0 '    $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
  193.     FileWrite $0 '    IfErrors error$\r$\n'
  194.     FileWrite $0 '    Exec "notepad.exe $$R2"$\r$\n'
  195.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  196.     goto endoninit
  197.     TextCompareExample4:
  198.     StrCmp $R0$R5 "6. TextCompareExample4" 0 LineFindExample123456
  199.     FileWrite $0 '    StrCpy $$R0 "$R1"$\r$\n'
  200.     FileWrite $0 '    StrCpy $$R1 "$R2"$\r$\n$\r$\n'
  201.     FileWrite $0 '    GetTempFileName $$R2$\r$\n'
  202.     FileWrite $0 '    FileOpen $$R3 $$R2 w$\r$\n'
  203.     FileWrite $0 '    FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
  204.     FileWrite $0 '    $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
  205.     FileWrite $0 '    IfErrors error$\r$\n'
  206.     FileWrite $0 '    FileWrite $$R3 "$$\$8$$\$9$$R1 | $$R0$$\$8$$\$9"$\r$\n'
  207.     FileWrite $0 '    $7TextCompare} "$$R1" "$$R0" "$R3" "$R5"$\r$\n'
  208.     FileWrite $0 '    FileClose $$R3$\r$\n'
  209.     FileWrite $0 '    IfErrors error$\r$\n'
  210.     FileWrite $0 '    Exec "notepad.exe $$R2"$\r$\n$\r$\n'
  211.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  212.     goto endoninit
  213.     LineFindExample123456:
  214.     FileWrite $0 '    $7$FUNCTION} "$R1" "$R2" "$R3" "$R4"$\r$\n'
  215.     FileWrite $0 '    IfErrors error$\r$\n'
  216.     FileWrite $0 '    MessageBox MB_YESNO "          Open output file?" IDNO end$\r$\n'
  217.     FileWrite $0 '    StrCmp "$R2" "" 0 +3$\r$\n'
  218.     FileWrite $0 `    Exec 'notepad.exe "$R1"'$\r$\n`
  219.     FileWrite $0 '    goto end$\r$\n'
  220.     FileWrite $0 '    SearchPath $$R2 "$R2"$\r$\n'
  221.     FileWrite $0 `    Exec 'notepad.exe "$$R2"'$\r$\n`
  222.     FileWrite $0 '    goto end$\r$\n$\r$\n'
  223.     endoninit:
  224.     FileWrite $0 '    error:$\r$\n'
  225.     FileWrite $0 '    MessageBox MB_OK "Error"$\r$\n$\r$\n'
  226.     FileWrite $0 '    end:$\r$\n'
  227.     FileWrite $0 '    Quit$\r$\n'
  228.     FileWrite $0 'FunctionEnd$\r$\n$\r$\n'
  229.     #FunctionEnd#
  230.  
  231.  
  232.     #Function CallBack#
  233.     StrCmp $CALLBACK '' 0 close
  234.     function:
  235.     StrCmp $R0 '1. LineFind' 0 +8
  236.     FileWrite $0 'Function $R4$\r$\n'
  237.     StrCmp $R4 "Example1" Example1LF
  238.     StrCmp $R4 "Example2" Example2LF
  239.     StrCmp $R4 "Example3" Example3LF
  240.     StrCmp $R4 "Example4" Example4LF
  241.     StrCmp $R4 "Example5" Example5LF
  242.     StrCmp $R4 "Example6" Example6LF
  243.  
  244.     FileWrite $0 'Function $R5$\r$\n'
  245.     StrCmp $R5 "Example1" Example1TC
  246.     StrCmp $R5 "Example2" Example2TC
  247.     StrCmp $R5 "Example3" Example3TC
  248.     StrCmp $R5 "Example4" Example4TC
  249.     StrCmp $R5 "Example5" Example3TC
  250.  
  251.     Example1LF:
  252.     FileWrite $0 "    $7TrimNewLines} '$$R9' $$R9$\r$\n"
  253.     FileWrite $0 "    StrCpy $$R9 $$R9 '' 2       ;delete first two symbols$\r$\n"
  254.     FileWrite $0 "    StrCpy $$R9 '$$R9$$\$8$$\$9'$\r$\n$\r$\n"
  255.     goto endwrite
  256.     Example2LF:
  257.     FileWrite $0 "    $7TrimNewLines} '$$R9' $$R9$\r$\n"
  258.     FileWrite $0 "    StrCpy $$R9 '$$R9   ~Changed line ($$R8)~$$\$8$$\$9'$\r$\n$\r$\n"
  259.     goto endwrite
  260.     Example3LF:
  261.     FileWrite $0 "    StrCpy $$0 SkipWrite$\r$\n$\r$\n"
  262.     goto endwrite
  263.     Example4LF:
  264.     FileWrite $0 "    FileWrite $$R4 '---First Line---$$\$8$$\$9'$\r$\n"
  265.     FileWrite $0 "    FileWrite $$R4 '---Second Line ...---$$\$8$$\$9'$\r$\n$\r$\n"
  266.     goto endwrite
  267.     Example5LF:
  268.     FileWrite $0 "    ; You can use:$\r$\n"
  269.     FileWrite $0 "    ; $7WordFind}|$7WordFindS}|$7WordFind2X}|$7WordFind2XS}|$\r$\n"
  270.     FileWrite $0 "    ; $7WordFind3X}|$7WordFind3XS}|$7WordReplace}|$7WordReplaceS}|$\r$\n"
  271.     FileWrite $0 "    ; $7WordAdd}|$7WordAddS}|$7WordInsert}|$7WordInsertS}|$\r$\n"
  272.     FileWrite $0 "    ; $7StrFilter}|$7StrFilterS}$\r$\n$\r$\n"
  273.     FileWrite $0 "    $7WordReplace} '$$R9' ' ' '_' '+*' $$R9$\r$\n$\r$\n"
  274.     goto endwrite
  275.     Example6LF:
  276.     FileWrite $0 '    ;(Cut lines from a line to another line (also including that line))$\r$\n'
  277.     FileWrite $0 '    StrCmp $$R0 finish stop$\r$\n'
  278.     FileWrite $0 '    StrCmp $$R0 start finish$\r$\n'
  279.     FileWrite $0 '    StrCmp $$R9 "Start Line$$\$8$$\$9" 0 skip$\r$\n'
  280.     FileWrite $0 '    StrCpy $$R0 start$\r$\n'
  281.     FileWrite $0 '    StrCpy $$R1 $$R9$\r$\n'
  282.     FileWrite $0 '    goto code$\r$\n'
  283.     FileWrite $0 '    finish:$\r$\n'
  284.     FileWrite $0 '    StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 code$\r$\n'
  285.     FileWrite $0 '    StrCpy $$R0 finish$\r$\n'
  286.     FileWrite $0 '    StrCpy $$R2 $$R8$\r$\n'
  287.     FileWrite $0 '    goto code$\r$\n'
  288.     FileWrite $0 '    skip:$\r$\n'
  289.     FileWrite $0 '    StrCpy $$0 SkipWrite$\r$\n'
  290.     FileWrite $0 '    goto output$\r$\n'
  291.     FileWrite $0 '    stop:$\r$\n'
  292.     FileWrite $0 '    StrCpy $$0 StopLineFind$\r$\n'
  293.     FileWrite $0 '    goto output$\r$\n$\r$\n'
  294.     FileWrite $0 '    ;;(Delete lines from a line to another line (also including that line))$\r$\n'
  295.     FileWrite $0 '    ; StrCmp $$R0 finish code$\r$\n'
  296.     FileWrite $0 '    ; StrCmp $$R0 start finish$\r$\n'
  297.     FileWrite $0 '    ; StrCmp $$R9 "Start Line$$\$8$$\$9" 0 code$\r$\n'
  298.     FileWrite $0 '    ; StrCpy $$R0 start$\r$\n'
  299.     FileWrite $0 '    ; StrCpy $$R1 $$R8$\r$\n'
  300.     FileWrite $0 '    ; goto skip$\r$\n'
  301.     FileWrite $0 '    ; finish:$\r$\n'
  302.     FileWrite $0 '    ; StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 skip$\r$\n'
  303.     FileWrite $0 '    ; StrCpy $$R0 finish$\r$\n'
  304.     FileWrite $0 '    ; StrCpy $$R2 $$R8$\r$\n'
  305.     FileWrite $0 '    ; skip:$\r$\n'
  306.     FileWrite $0 '    ; StrCpy $$0 SkipWrite$\r$\n'
  307.     FileWrite $0 '    ; goto output$\r$\n$\r$\n'
  308.     FileWrite $0 '    code:$\r$\n'
  309.     FileWrite $0 '    ;...$\r$\n$\r$\n'
  310.     FileWrite $0 '    output:$\r$\n'
  311.     goto endwrite
  312.     Example1TC:
  313.     FileWrite $0 "    StrCpy $$R0 NotEqual$\r$\n"
  314.     FileWrite $0 "    StrCpy $$0 StopTextCompare$\r$\n$\r$\n"
  315.     goto endwrite
  316.     Example2TC:
  317.     FileWrite $0 "    FileWrite $$R3 '$$8=$$9'$\r$\n"
  318.     FileWrite $0 "    FileWrite $$R3 '$$6=$$7$$\$8$$\$9'$\r$\n$\r$\n"
  319.     goto endwrite
  320.     Example3TC:
  321.     FileWrite $0 "    FileWrite $$R3 '$$8|$$6=$$9'$\r$\n$\r$\n"
  322.     goto endwrite
  323.     Example4TC:
  324.     FileWrite $0 "    FileWrite $$R3 '$$8=$$9'$\r$\n$\r$\n"
  325.     goto endwrite
  326.     endwrite:
  327.     FileWrite $0 '    Push $$0$\r$\n'
  328.     FileWrite $0 'FunctionEnd$\r$\n'
  329.     close:
  330.     FileClose $0
  331.     goto $6
  332.     #FunctionEnd#
  333.  
  334.     showproject:
  335.     StrCmp $R0 '1. LineFind' 0 +3
  336.     ExecWait 'notepad.exe $CALLBACK'
  337.     goto +4
  338.     SetFileAttributes $PROJECT READONLY
  339.     ExecWait 'notepad.exe $PROJECT'
  340.     SetFileAttributes $PROJECT NORMAL
  341.     Abort
  342.  
  343.     MainSend:
  344.     GetDlgItem $0 $HWND 1210
  345.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  346.     GetDlgItem $0 $HWND 1203
  347.     ShowWindow $0 1
  348.     EnableWindow $0 1
  349.     GetDlgItem $0 $HWND 1204
  350.     ShowWindow $0 1
  351.     EnableWindow $0 1
  352.     GetDlgItem $0 $HWND 1205
  353.     EnableWindow $0 1
  354.     GetDlgItem $0 $HWND 1206
  355.     ShowWindow $0 0
  356.     GetDlgItem $0 $HWND 1207
  357.     ShowWindow $0 0
  358.     GetDlgItem $0 $HWND 1208
  359.     ShowWindow $0 0
  360.     GetDlgItem $0 $HWND 1209
  361.     ShowWindow $0 0
  362.     GetDlgItem $0 $HWND 1211
  363.     EnableWindow $0 1
  364.  
  365.     StrCmp $FUNCTION LineFind 0 +5
  366.     StrCpy $LINEFIND1 $R1
  367.     StrCpy $LINEFIND2 $R2
  368.     StrCpy $LINEFIND3 $R3
  369.     goto LineFindSend
  370.     StrCmp $FUNCTION LineRead 0 +4
  371.     StrCpy $LINEREAD1 $R1
  372.     StrCpy $LINEREAD2 $R2
  373.     goto LineFindSend
  374.     StrCmp $FUNCTION FileReadFromEnd 0 +3
  375.     StrCpy $FILEREADFROMEND1 $R1
  376.     goto LineFindSend
  377.     StrCmp $FUNCTION LineSum 0 +3
  378.     StrCpy $LINESUM1 $R1
  379.     goto LineFindSend
  380.     StrCmp $FUNCTION FileJoin 0 +5
  381.     StrCpy $FILEJOIN1 $R1
  382.     StrCpy $FILEJOIN2 $R2
  383.     StrCpy $FILEJOIN3 $R3
  384.     goto LineFindSend
  385.     StrCmp $FUNCTION TextCompare 0 +5
  386.     StrCpy $TEXTCOMPARE1 $R1
  387.     StrCpy $TEXTCOMPARE2 $R2
  388.     StrCpy $TEXTCOMPARE3 $R3
  389.     goto LineFindSend
  390.     StrCmp $FUNCTION ConfigRead 0 +4
  391.     StrCpy $CONFIGREAD1 $R1
  392.     StrCpy $CONFIGREAD2 $R2
  393.     goto LineFindSend
  394.     StrCmp $FUNCTION ConfigWrite 0 +5
  395.     StrCpy $CONFIGWRITE1 $R1
  396.     StrCpy $CONFIGWRITE2 $R2
  397.     StrCpy $CONFIGWRITE3 $R3
  398.     goto LineFindSend
  399.     StrCmp $FUNCTION FileRecode 0 +3
  400.     StrCpy $FILERECODE1 $R1
  401.     StrCpy $FILERECODE2 $R2
  402.  
  403.     LineFindSend:
  404.     StrCmp $R0 "1. LineFind" 0 LineReadSend
  405.     StrCmp $FUNCTION LineFind 0 LineFindSend2
  406.     StrCmp $R4 "Example1" 0 +3
  407.     StrCpy $LINEFIND3 "3:-1"
  408.     goto LineFindSend2
  409.     StrCmp $R4 "Example2" 0 +3
  410.     StrCpy $LINEFIND3 "{5:12 15 -6:-5 -1}"
  411.     goto LineFindSend2
  412.     StrCmp $R4 "Example3" 0 +3
  413.     StrCpy $LINEFIND3 "2:3 10:-5 -3:-2"
  414.     goto LineFindSend2
  415.     StrCmp $R4 "Example4" 0 +3
  416.     StrCpy $LINEFIND3 "10"
  417.     goto LineFindSend2
  418.     StrCmp $R4 "Example5" 0 +3
  419.     StrCpy $LINEFIND3 "1:-1"
  420.     goto LineFindSend2
  421.     StrCmp $R4 "Example6" 0 +3
  422.     StrCpy $LINEFIND3 ""
  423.     goto LineFindSend2
  424.     StrCmp $R4 "Example7" 0 +2
  425.     StrCpy $LINEFIND3 "1:-1"
  426.  
  427.     LineFindSend2:
  428.     StrCpy $FUNCTION LineFind
  429.     StrCmp $LINEFIND2 '/NUL' 0 +2
  430.     StrCpy $LINEFIND2 ''
  431.     GetDlgItem $0 $HWND 1201
  432.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND1"
  433.     GetDlgItem $0 $HWND 1203
  434.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND2"
  435.     GetDlgItem $0 $HWND 1205
  436.     ShowWindow $0 1
  437.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND3"
  438.     GetDlgItem $0 $HWND 1207
  439.     ShowWindow $0 1
  440.     GetDlgItem $0 $HWND 1211
  441.     ShowWindow $0 1
  442.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Edit"
  443.     GetDlgItem $0 $HWND 1212
  444.     ShowWindow $0 1
  445.     StrCmp $LOG '' +2
  446.     EnableWindow $0 1
  447.     GetDlgItem $0 $HWND 1213
  448.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  449.     GetDlgItem $0 $HWND 1214
  450.     SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
  451.     GetDlgItem $0 $HWND 1215
  452.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Range"
  453.     GetDlgItem $0 $HWND 1216
  454.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  455.  
  456.     StrCmp $R4 "Example7" 0 +9
  457.     GetDlgItem $0 $HWND 1203
  458.     EnableWindow $0 0
  459.     SendMessage $0 ${WM_ENABLE} 1 0
  460.     SendMessage $0 ${WM_SETTEXT} 1 "STR:/NUL"
  461.     GetDlgItem $0 $HWND 1204
  462.     EnableWindow $0 0
  463.     GetDlgItem $0 $HWND 1211
  464.     EnableWindow $0 0
  465.     abort
  466.  
  467.  
  468.     LineReadSend:
  469.     StrCmp $R0 "2. LineRead" 0 FileReadFromEndSend
  470.     StrCpy $FUNCTION LineRead
  471.     GetDlgItem $0 $HWND 1201
  472.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD1"
  473.     GetDlgItem $0 $HWND 1203
  474.     ShowWindow $0 1
  475.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD2"
  476.     GetDlgItem $0 $HWND 1204
  477.     ShowWindow $0 0
  478.     GetDlgItem $0 $HWND 1205
  479.     ShowWindow $0 0
  480.     GetDlgItem $0 $HWND 1211
  481.     ShowWindow $0 0
  482.     GetDlgItem $0 $HWND 1212
  483.     ShowWindow $0 0
  484.     GetDlgItem $0 $HWND 1213
  485.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  486.     GetDlgItem $0 $HWND 1214
  487.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Line #"
  488.     GetDlgItem $0 $HWND 1215
  489.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  490.     GetDlgItem $0 $HWND 1216
  491.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  492.     Abort
  493.  
  494.     FileReadFromEndSend:
  495.     StrCmp $R0 "3. FileReadFromEnd" 0 LineSumSend
  496.     StrCpy $FUNCTION FileReadFromEnd
  497.     GetDlgItem $0 $HWND 1201
  498.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEREADFROMEND1"
  499.     GetDlgItem $0 $HWND 1203
  500.     ShowWindow $0 0
  501.     GetDlgItem $0 $HWND 1204
  502.     ShowWindow $0 0
  503.     GetDlgItem $0 $HWND 1205
  504.     ShowWindow $0 0
  505.     GetDlgItem $0 $HWND 1209
  506.     ShowWindow $0 1
  507.     GetDlgItem $0 $HWND 1211
  508.     ShowWindow $0 1
  509.     SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
  510.     GetDlgItem $0 $HWND 1212
  511.     ShowWindow $0 0
  512.     GetDlgItem $0 $HWND 1213
  513.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  514.     GetDlgItem $0 $HWND 1214
  515.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  516.     GetDlgItem $0 $HWND 1215
  517.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  518.     GetDlgItem $0 $HWND 1216
  519.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  520.     Abort
  521.  
  522.     LineSumSend:
  523.     StrCmp $R0 "4. LineSum" 0 FileJoinSend
  524.     StrCpy $FUNCTION LineSum
  525.     GetDlgItem $0 $HWND 1201
  526.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINESUM1"
  527.     GetDlgItem $0 $HWND 1203
  528.     ShowWindow $0 0
  529.     GetDlgItem $0 $HWND 1204
  530.     ShowWindow $0 0
  531.     GetDlgItem $0 $HWND 1205
  532.     ShowWindow $0 0
  533.     GetDlgItem $0 $HWND 1211
  534.     ShowWindow $0 0
  535.     GetDlgItem $0 $HWND 1212
  536.     ShowWindow $0 0
  537.     GetDlgItem $0 $HWND 1213
  538.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  539.     GetDlgItem $0 $HWND 1214
  540.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  541.     GetDlgItem $0 $HWND 1215
  542.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  543.     GetDlgItem $0 $HWND 1216
  544.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  545.     Abort
  546.  
  547.     FileJoinSend:
  548.     StrCmp $R0 "5. FileJoin" 0 TextCompareSend
  549.     StrCpy $FUNCTION FileJoin
  550.     GetDlgItem $0 $HWND 1201
  551.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN1"
  552.     GetDlgItem $0 $HWND 1203
  553.     ShowWindow $0 1
  554.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN2"
  555.     GetDlgItem $0 $HWND 1204
  556.     ShowWindow $0 1
  557.     GetDlgItem $0 $HWND 1205
  558.     ShowWindow $0 1
  559.     EnableWindow $0 1
  560.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN3"
  561.     GetDlgItem $0 $HWND 1206
  562.     ShowWindow $0 1
  563.     GetDlgItem $0 $HWND 1211
  564.     ShowWindow $0 0
  565.     GetDlgItem $0 $HWND 1212
  566.     ShowWindow $0 0
  567.     GetDlgItem $0 $HWND 1213
  568.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile1"
  569.     GetDlgItem $0 $HWND 1214
  570.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile2"
  571.     GetDlgItem $0 $HWND 1215
  572.     SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
  573.     GetDlgItem $0 $HWND 1216
  574.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  575.     Abort
  576.  
  577.     TextCompareSend:
  578.     StrCmp $R0 "6. TextCompare" 0 ConfigReadSend
  579.     StrCmp $FUNCTION TextCompare 0 TextCompareSend2
  580.     StrCmp $R5 "Example1" 0 +3
  581.     StrCpy $TEXTCOMPARE3 "FastDiff"
  582.     goto TextCompareSend2
  583.     StrCmp $R5 "Example2" 0 +3
  584.     StrCpy $TEXTCOMPARE3 "FastDiff"
  585.     goto TextCompareSend2
  586.     StrCmp $R5 "Example3" 0 +3
  587.     StrCpy $TEXTCOMPARE3 "FastEqual"
  588.     goto TextCompareSend2
  589.     StrCmp $R5 "Example4" 0 +3
  590.     StrCpy $TEXTCOMPARE3 "SlowDiff"
  591.     goto TextCompareSend2
  592.     StrCmp $R5 "Example5" 0 +2
  593.     StrCpy $TEXTCOMPARE3 "SlowEqual"
  594.  
  595.     TextCompareSend2:
  596.     StrCpy $FUNCTION TextCompare
  597.     GetDlgItem $0 $HWND 1201
  598.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE1"
  599.     GetDlgItem $0 $HWND 1203
  600.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE2"
  601.     GetDlgItem $0 $HWND 1204
  602.     ShowWindow $0 1
  603.     GetDlgItem $0 $HWND 1205
  604.     ShowWindow $0 1
  605.     EnableWindow $0 0
  606.     SendMessage $0 ${WM_ENABLE} 1 0
  607.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE3"
  608.     GetDlgItem $0 $HWND 1208
  609.     ShowWindow $0 1
  610.     GetDlgItem $0 $HWND 1211
  611.     ShowWindow $0 1
  612.     SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
  613.     GetDlgItem $0 $HWND 1212
  614.     ShowWindow $0 1
  615.     GetDlgItem $0 $HWND 1213
  616.     SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile1"
  617.     GetDlgItem $0 $HWND 1214
  618.     SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile2"
  619.     GetDlgItem $0 $HWND 1215
  620.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Option"
  621.     GetDlgItem $0 $HWND 1216
  622.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
  623.     abort
  624.  
  625.     ConfigReadSend:
  626.     StrCmp $R0 "7. ConfigRead" 0 ConfigWriteSend
  627.     StrCpy $FUNCTION ConfigRead
  628.     GetDlgItem $0 $HWND 1201
  629.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD1"
  630.     GetDlgItem $0 $HWND 1203
  631.     ShowWindow $0 1
  632.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD2"
  633.     GetDlgItem $0 $HWND 1204
  634.     ShowWindow $0 0
  635.     GetDlgItem $0 $HWND 1205
  636.     ShowWindow $0 0
  637.     GetDlgItem $0 $HWND 1211
  638.     ShowWindow $0 0
  639.     GetDlgItem $0 $HWND 1212
  640.     ShowWindow $0 0
  641.     GetDlgItem $0 $HWND 1213
  642.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  643.     GetDlgItem $0 $HWND 1214
  644.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
  645.     GetDlgItem $0 $HWND 1215
  646.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  647.     GetDlgItem $0 $HWND 1216
  648.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  649.     Abort
  650.  
  651.     ConfigWriteSend:
  652.     StrCmp $R0 "8. ConfigWrite" 0 FileRecodeSend
  653.     StrCpy $FUNCTION ConfigWrite
  654.     GetDlgItem $0 $HWND 1201
  655.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE1"
  656.     GetDlgItem $0 $HWND 1203
  657.     ShowWindow $0 1
  658.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE2"
  659.     GetDlgItem $0 $HWND 1204
  660.     ShowWindow $0 0
  661.     GetDlgItem $0 $HWND 1205
  662.     ShowWindow $0 1
  663.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE3"
  664.     GetDlgItem $0 $HWND 1211
  665.     ShowWindow $0 0
  666.     GetDlgItem $0 $HWND 1212
  667.     ShowWindow $0 0
  668.     GetDlgItem $0 $HWND 1213
  669.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  670.     GetDlgItem $0 $HWND 1214
  671.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
  672.     GetDlgItem $0 $HWND 1215
  673.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Value"
  674.     GetDlgItem $0 $HWND 1216
  675.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  676.     Abort
  677.  
  678.     FileRecodeSend:
  679.     StrCmp $R0 "9. FileRecode" 0 Abort
  680.     StrCpy $FUNCTION FileRecode
  681.     GetDlgItem $0 $HWND 1201
  682.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE1"
  683.     GetDlgItem $0 $HWND 1203
  684.     ShowWindow $0 1
  685.     SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE2"
  686.     GetDlgItem $0 $HWND 1204
  687.     ShowWindow $0 0
  688.     GetDlgItem $0 $HWND 1205
  689.     ShowWindow $0 0
  690.     GetDlgItem $0 $HWND 1211
  691.     ShowWindow $0 0
  692.     GetDlgItem $0 $HWND 1212
  693.     ShowWindow $0 0
  694.     GetDlgItem $0 $HWND 1213
  695.     SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
  696.     GetDlgItem $0 $HWND 1214
  697.     SendMessage $0 ${WM_SETTEXT} 1 "STR:Format"
  698.     GetDlgItem $0 $HWND 1215
  699.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  700.     GetDlgItem $0 $HWND 1216
  701.     SendMessage $0 ${WM_SETTEXT} 1 "STR:"
  702.     Abort
  703.  
  704. ;=Enter=
  705.     Enter:
  706.     StrCmp $R1 '' 0 +3
  707.     StrCpy $0 'Choose InputFile'
  708.     goto send
  709.     IfFileExists $R1 +3
  710.     StrCpy $0 'InputFile is not exist'
  711.     goto send
  712.  
  713.     StrCmp $R0 "1. LineFind" LineFindRead
  714.     StrCmp $R0 "2. LineRead" LineRead
  715.     StrCmp $R0 "3. FileReadFromEnd" FileReadFromEnd
  716.     StrCmp $R0 "4. LineSum" LineSum
  717.     StrCmp $R0 "5. FileJoin" FileJoin
  718.     StrCmp $R0 "6. TextCompare" LineFind-TextCompare
  719.     StrCmp $R0 "7. ConfigRead" ConfigRead
  720.     StrCmp $R0 "8. ConfigWrite" ConfigWrite
  721.     StrCmp $R0 "9. FileRecode" FileRecode
  722.     Abort
  723.  
  724.     LineFindRead:
  725.     StrCmp $R4 "Example7" 0 LineFind-TextCompare
  726.     ${LineFind} '$R1' '/NUL' '$R3' LineFindCallback
  727.     IfErrors error
  728.     StrCmp $R0 StopLineFind 0 done
  729.     StrCpy $0 'stopped'
  730.     goto send
  731.  
  732.     LineFind-TextCompare:
  733.     GetLabelAddress $6 LineFindBack
  734.     goto Edit
  735.     LineFindBack:
  736.     FileClose $0
  737.     StrCmp $R0 "6. TextCompare" Compile
  738.     StrCmp $CALLBACK '' Compile
  739.     ${FileJoin} "$PROJECT" "$CALLBACK" ""
  740.  
  741.     Compile:
  742.     StrCmp $LOG '' 0 +4
  743.     GetTempFileName $LOG $PLUGINSDIR
  744.     GetDlgItem $0 $HWND 1212
  745.     EnableWindow $0 1
  746.     ReadRegStr $0 HKLM "SOFTWARE\NSIS" ""
  747.     IfErrors 0 +2
  748.     StrCpy $0 "${NSISDIR}"
  749.     nsExec::Exec '"$0\makensis.exe" /O$LOG $PROJECT'
  750.     Pop $0
  751.     StrCmp $0 0 0 +6
  752.     ExecWait '$PROJECT.exe' $0
  753.     Delete $PROJECT
  754.     Delete $PROJECT.exe
  755.     StrCpy $PROJECT ''
  756.     goto done
  757.     MessageBox MB_YESNO|MB_ICONEXCLAMATION "Compile error. Open log?" IDNO +2
  758.     Exec 'notepad.exe $LOG'
  759.     StrCpy $0 "Compile Error"
  760.     goto send
  761.  
  762.     LineRead:
  763.     ${LineRead} "$R1" "$R2" $0
  764.     IfErrors error send
  765.  
  766.     FileReadFromEnd:
  767.     ${FileReadFromEnd} "$R1" "FileReadFromEndCallback"
  768.     IfErrors error
  769.     StrCmp $R0 StopFileReadFromEnd 0 done
  770.     StrCpy $0 'stopped'
  771.     goto send
  772.  
  773.     LineSum:
  774.     ${LineSum} "$R1" $0
  775.     IfErrors error send
  776.  
  777.     FileJoin:
  778.     ${FileJoin} "$R1" "$R2" "$R3"
  779.     IfErrors error
  780.     MessageBox MB_YESNO "          Open output file?" IDNO done
  781.     StrCmp $R3 '' 0 +3
  782.     Exec '"notepad.exe" "$R1"'
  783.     goto done
  784.     Exec '"notepad.exe" "$R3"'
  785.     goto done
  786.  
  787.     ConfigRead:
  788.     ${ConfigRead} "$R1" "$R2" $0
  789.     IfErrors error send
  790.  
  791.     ConfigWrite:
  792.     ${ConfigWrite} "$R1" "$R2" "$R3" $0
  793.     IfErrors error
  794.     MessageBox MB_YESNO "          Open output file?" IDNO send
  795.     Exec '"notepad.exe" "$R1"'
  796.     goto send
  797.  
  798.     FileRecode:
  799.     ${FileRecode} "$R1" "$R2"
  800.     IfErrors error
  801.     MessageBox MB_YESNO "          Open output file?" IDNO done
  802.     Exec '"notepad.exe" "$R1"'
  803.     goto done
  804.  
  805.     error:
  806.     StrCpy $0 'error'
  807.     goto send
  808.  
  809.     done:
  810.     StrCpy $0 'Done'
  811.  
  812.     send:
  813.     GetDlgItem $1 $HWND 1210
  814.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
  815.  
  816.     abort:
  817.     Abort
  818. FunctionEnd
  819.  
  820. Function LineFindCallback
  821.     MessageBox MB_OKCANCEL '$$R9       "Line"=[$R9]$\n$$R8           "#"=[$R8]$\n$$R7          "-#"=[$R7]$\n$$R6   "Range"=[$R6]$\n$$R5     "Read"=[$R5]$\n$$R4     "Write"=[$R4]' IDOK +2
  822.     StrCpy $R0 StopLineFind
  823.  
  824.     Push $R0
  825. FunctionEnd
  826.  
  827. Function FileReadFromEndCallback
  828.     MessageBox MB_OKCANCEL '$$9       "Line"=[$9]$\n$$8           "#"=[$8]$\n$$7          "-#"=[$7]' IDOK +2
  829.     StrCpy $R0 StopFileReadFromEnd
  830.  
  831.     Push $R0
  832. FunctionEnd
  833.  
  834. Function .onInit
  835.     InitPluginsDir
  836.     GetTempFileName $INI $PLUGINSDIR
  837.     File /oname=$INI "TextFunc.ini"
  838. FunctionEnd
  839.  
  840. Page instfiles
  841.  
  842. Section -Empty
  843. SectionEnd
  844.